/* 主控程序 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "common.h"

FILE* src;                  // 源文件            

static void init()
{
	lex_init();              // 词法初始化
	block_init();            // 语法初始化
	code_init();             // 中间代码初始化
}

int main()
{
    // 文件名读入 + 文件打开
    char filename[32];
    strcpy(filename, "../test/");
    printf("Input file: ");
    scanf("%s", filename + 8);
    src = fopen(filename, "r");
    if(src == NULL) {
        printf("Fail to open %s\n", filename);
        exit(1);
    }
    rewind(src);

    // step-1: 初始化
    init();

    // step-2: 词法分析 + 语法分析 + 中间代码生成
    printf("\n------------complier begin---------------\n");
    lex_next();
    block(0, 4, 0, false);
    printf("\n------------complier end----------------\n");

    // step-3: 输出中间代码
	code_list(0);

    // step-4 解释执行中间代码
    printf("\n--------------interpret begin---------------\n");
	interpret();
	printf("\n--------------interpret end----------------\n");

    // 关闭文件
	fclose(src);
	return 0;
}